订单簿管理
如何正确管理本地订单簿
- 建立到
wss://stream.xt.com/public
的连接,例如depth_update@btc_usdt
。 - 缓存从数据流接收到的事件。
- 从
https://sapi.xt.com/v4/public/depth?symbol=btc_usdt&limit=500
获取深度快照。 - 丢弃快照中
i <= lastUpdateId
的所有事件。 - 第一个处理的事件应满足
fi <= lastUpdateId + 1
且i >= lastUpdateId + 1
。 - 监听数据流时,每个新事件的
fi
应等于前一个事件的i + 1
。 - 每个事件中的数据是价格档位的绝对数量。
- 如果数量为 0,则移除该价格档位。
- 接收到移除本地订单簿中不存在的价格档位的事件是正常现象。
注意: 由于深度快照对价格档位数量有限制,初始快照之外且数量未发生变化的价格档位不会在增量深度流中更新。因此,即使正确应用增量深度流的所有更新,这些价格档位也不会在本地订单簿中显示。这可能导致本地订单簿与实际订单簿存在细微差异。不过,对于大多数使用场景,500 档深度限制足以理解市场并进行有效交易。